package org.jmc.refmanager.web.wicket.model;

public abstract class EnumMessageKeyProvider {
	private static EnumMessageKeyProvider provider = new DefaultEnumResourceKeyProvider();

	public static EnumMessageKeyProvider getDefault() {
		return EnumMessageKeyProvider.provider;
	}

	public static void setDefault(EnumMessageKeyProvider provider) {
		EnumMessageKeyProvider.provider = provider;
	}

	public abstract <T extends Enum<T>> String computeMessageKey(T enumValue, Class<T> enumType);

	public static <T extends Enum<T>> String getMessageKey(T enumValue, Class<T> enumType) {
		return EnumMessageKeyProvider.provider.computeMessageKey(enumValue, enumType);
	}
}
